<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>函数的环境和函数的作用域</title>
</head>
<body>
    
</body>
<script>
    /*
        函数的环境和函数的作用域
            函数环境 -- 前面已经学过了全局的环境
                全局环境的特点： 在全局里面定义的变量，常量，函数都不会被回收，并且这些数据会渗透到它的子元素中
                函数环境的特点： 在函数中定义常量，变量在函数执行结束以后就会被回收  它也会渗透到它的子元素中
    */
    let name = 'jimmy'
    function url(){
        console.log(name)
        let url = 'jimmy.com'
        console.log(http)  // http is not defined
        function geturl(){
            console.log(url)
            console.log(name)
            let http = 'http://'
        }
        geturl()
    }
    console.log(name)
    url()
    /*
        函数的作用域：
        简单的理解可以往继承的方向去理解   
            子元素会继承父元素的值  而父元素是不会继承子元素的值的
    */

    url()
    url()
    url()
    /*
        以上函数执行了三次 
            虽然每次的结果都是一样的  但是他们结果的地址是不一样的
                只要执行一次函数  JS就会在全局变量中开辟一个内存空间用于存储值  执行结束就会立马释放掉这个内存空间
                在次执行又会重新开辟空间 。。。。。。 
                所以虽然每次的结果是一样的   但是实际上他们的地址是不一样的
    */

</script>
</html>